﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

public class ForumDAL : DALBase
{


    #region CREATE

    #endregion


    #region READ

 

    public List<Forum> GetAllForumPosts()
    {
        Sanitize sanitize = new Sanitize();
        var forumPosts = new List<Forum>(100);
        using (SqlConnection conn = CreateConnection()) // using för att den alltid ska stängas sen.
        {
            try
            {                    // namnet på den lagrade proceduren mellan ""
                var cmd = new SqlCommand("dbo.usp_GetAllForumPosts", conn);
                cmd.CommandType = CommandType.StoredProcedure;

                conn.Open(); //  bra att öppna anslutningen ;)

                using (var reader = cmd.ExecuteReader()) // får en byteström tillbaka, innehåller alla poster.
                {
                    var TopicIDIndex = reader.GetOrdinal("TopicID");
                    var HeaderIndex = reader.GetOrdinal("Header");
                    var DateIndex = reader.GetOrdinal("TheDate");
                    var UserIDIndex = reader.GetOrdinal("UserID");

                    while (reader.Read())
                    {
                        // för varje post vi får tillbaka så ska vi instansiera ett Spelare objekt.
                        forumPosts.Add(new Forum
                        {
                            TopicID = reader.GetInt32(TopicIDIndex),
                            Header = sanitize.DecodeText(reader.GetString(HeaderIndex)),
                            Date = sanitize.DecodeText(String.Format("{0}", reader.GetDateTime(DateIndex))),
                            UserID = reader.GetInt32(UserIDIndex),
                        });
                    }
                }
            }
            catch
            {
                throw new ApplicationException("An error has occured in the data access layer.");
            }
        }
        return forumPosts;
    }

    #endregion


    #region UPDATE

    #endregion


    #region DELETE

    #endregion

    public ForumDAL()
    {
    }

}
